#include "stdafx.h"
#include "CppUnitTest.h"

#include "System/Base/Scene.h"
#include "System/Utility/Testing.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace Native::System;
using namespace Native { namespace System::Utility;

namespace TestNativeSystem
{
    TEST_CLASS(Scene_Tester)
    {
    public:
        CScene _base;

        Scene_Tester()
        {
            _base.Class(L"CObject");
            _base.Method(L"ToString");
            _base.Line(267);
        }

        TEST_METHOD(Scene_EqualTo)
        {
            UEquivalentTester::CheckByEqualTo<CScene>(
                dynamic_cast<IEqualTo<CScene>*>(&_base),
                CScene(L"CObject", L"ToString", 300),
                false);
        }

        TEST_METHOD(Scene_Construct)
        {
            UConstructorTester::CheckByEqualTo<CScene>(_base);
        }

        TEST_METHOD(Scene_ConstructedByDefault)
        {
            CScene scene;

            Assert::AreEqual(scene.Class(), EMPTY_STRING);
            Assert::AreEqual(scene.Method(), EMPTY_STRING);
            Assert::AreEqual(scene.Line(), 0u);
        }

        TEST_METHOD(Scene_ConstructedBySpecified)
        {
            CScene scene(_base.Class(), _base.Method(), _base.Line());

            Assert::AreEqual(scene.Class(), _base.Class());
            Assert::AreEqual(scene.Method(), _base.Method());
            Assert::AreEqual(scene.Line(), _base.Line());
        }

        TEST_METHOD(Scene_ConvertToString)
        {
            CScene scene(_base);
        }
    };
}